Gestures: Properly handle weak references
authorMatthias Clasen <mclasen@redhat.com>
Wed, 11 Mar 2015 10:47:04 +0000 (06:47 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 11 Mar 2015 10:47:04 +0000 (06:47 -0400)
Every call to g_object_add_weak_pointer must be matched with
a g_object_remove_weak_pointer call, or we will get invalid
writes inside GObject.

https://bugzilla.gnome.org/show_bug.cgi?id=746013

gtk/gtkeventcontroller.c

index 4a3e3017bcdae3b1c79d9adf55cdca276bd055fa..a5cfde1e3e5cdbae310ad798d3fdb28a20be650f 100644 (file)
@@ -131,7 +131,11 @@ gtk_event_controller_dispose (GObject *object)
 
   priv = gtk_event_controller_get_instance_private (controller);
   if (priv->widget)
-    _gtk_widget_remove_controller (priv->widget, controller);
+    {
+      _gtk_widget_remove_controller (priv->widget, controller);
+      g_object_remove_weak_pointer (G_OBJECT (priv->widget), (gpointer *) &priv->widget);
+      priv->widget = NULL;
+    }
 
   G_OBJECT_CLASS (gtk_event_controller_parent_class)->dispose (object);
 }